################################################################################
## Neural Network Image Compressor Makefile                                   ##
################################################################################

# Path settings
EASYBMP=lib/EasyBMP
MAIN=src2
BUILDAREA=build
BINAREA=bin
BINARY=ncompress

# Environment utils
CP=cp
RM=rm -rf

# Main rule
all: compile.mpi


################################################################################
## COMPILE PART ################################################################
################################################################################

#compiler settings (C++)
CXXFLAGS=-Wall -lrt -lm
CXXFLAGS_MPI=$(CXXFLAGS)
CXX_MPI=mpiCC

# compile the EasyBMP library
easybmp.mpi: 
	make -C $(EASYBMP) CXX=mpiCC

easybmp.nompi: 
	make -C $(EASYBMP)
	
main.mpi: 
	make -C $(MAIN) CXX=mpiCC all.mpi

main.nompi: 
	make -C $(MAIN) all.nompi

gather.mpi: easybmp.mpi main.mpi
	$(CP) $(EASYBMP)/*.o $(BUILDAREA)
	$(CP) $(MAIN)/*.o $(BUILDAREA)

gather.nompi: easybmp.nompi main.nompi
	$(CP) $(EASYBMP)/*.o $(BUILDAREA)
	$(CP) $(MAIN)/*.o $(BUILDAREA)

compile.mpi: gather.mpi
	$(CXX_MPI) $(CXXFLAGS_MPI) $(BUILDAREA)/*.o -o $(BUILDAREA)/$(BINARY)  
	$(CP) $(BUILDAREA)/$(BINARY) $(BINAREA)/$(BINARY)
	@echo "\n\nFinished successfully!"
	@echo "Output: ./$(BINAREA)/$(BINARY)"

compile.nompi: gather.nompi
	$(CXX) $(CXXFLAGS) $(BUILDAREA)/*.o -o $(BUILDAREA)/$(BINARY)  
	$(CP) $(BUILDAREA)/$(BINARY) $(BINAREA)/$(BINARY)
	@echo "\n\nFinished successfully!"
	@echo "Output: ./$(BINAREA)/$(BINARY)"

################################################################################
## CLEAN PART ##################################################################
################################################################################

clean:
	make -C $(EASYBMP) clean
	make -C $(MAIN) clean
	$(RM) $(BINAREA)/*
	$(RM) $(BUILDAREA)/*	
	